home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 12 / Amiga Plus Sonderheft Amiga 12.iso / pd / spiele / blackcoastraider / blackcoastraider.amos / blackcoastraider.amosSourceCode
AMOS Source Code  |  1980-02-03  |  16KB  |  296 lines

  1. Global MAPX,MAPY,MAPXPREV,MAPYPREV,STICKSTICK,CLEAR,SILVER,RANK,HOLD,DEST$
  2. Global SPICEPRICE,OLIVESPRICE,SPICEHOLD,OLIVESHOLD,ITEMS,RANK$,YESNO,MISSIVE
  3. Global ERRANT,OGIN$,HOLDSIZE,GUARDX,GUARDY
  4. SETUP
  5. Rem SPRITE COLOURS Colour 16,$F00 : Colour 18,$FFF 
  6. Do 
  7.    CHECKCOLLISION
  8.    MOVE
  9.    MAP
  10.    GUARD
  11.    If Timer>4000 and Timer<6000 Then Fade 500 To 6 Else If Timer>6000 Then Fade 500 To 7 : Timer=0
  12. Loop 
  13. Procedure GUARD
  14.    If GUARDX<40 and GUARDY=0 Then GUARDX=GUARDX+1
  15.    If GUARDX=40 and GUARDY<40 Then GUARDY=GUARDY+1
  16.    If GUARDY=40 and GUARDX<41 and GUARDX>0 Then GUARDX=GUARDX-1
  17.    If GUARDX<1 and GUARDY<41 Then GUARDY=GUARDY-1
  18.    Bob 22,MAPX-GUARDX-10,MAPY+20+GUARDY,28
  19. End Proc
  20. Procedure MARKET
  21.    Screen Open 2,640,100,2,Hires : Curs Off : Box 0,0 To 639,99 : Screen Display 2,128,300-50,640,100
  22.    Draw 320,0 To 320,99
  23.    GRIDX=160 : GRIDY=40
  24.    Reserve Zone(ITEMS*2)+1+YESNO : Screen 2 : Limit Mouse 136,158 To 586,241
  25.    DWN=0
  26.    Set Zone 1,320,83 To 640,100
  27.    For Z=2 To ITEMS*2+1 Step 2
  28.       Set Zone Z,GRIDX,GRIDY+DWN-1 To GRIDX+24,GRIDY+DWN+7
  29.       Set Zone Z+1,GRIDX+24,GRIDY+DWN-1 To GRIDX+48,GRIDY+DWN+7
  30.       DWN=DWN+8
  31.    Next Z
  32.    If YESNO=2 Then Locate 50,6 : Print "Yes               No" : Box 320,41 To 480,60 : Box 480,41 To 639,60 : Set Zone(ITEMS*2)+2,320,41 To 480,60 : Set Zone(ITEMS*2)+3,480,41 To 639,60 : Locate 47,4 : Print "Do you accept the mission?"
  33.    Locate 11,1 : Print "     Trading"
  34.    Locate 58,11 : Print "EXIT"; : Box 320,83 To 640,100
  35.    SILVERHOLD
  36.    Locate 1,3 : Print "ITEM         PRICE             IN SHIP"
  37.    Locate 1,5 : Print "Spice" : Locate 13,5 : Print SPICEPRICE : Locate 31,5 : Print SPICEHOLD
  38.    Locate 1,6 : Print "Olives" : Locate 13,6 : Print OLIVESPRICE : Locate 31,6 : Print OLIVESHOLD
  39.    For GRIDY=GRIDY To GRIDY+(8*ITEMS-1) Step 8 : Box GRIDX,GRIDY To GRIDX+24,GRIDY+7 : Draw GRIDX+3,GRIDY+5 To GRIDX+12,GRIDY+2 : Draw GRIDX+20,GRIDY+5 To GRIDX+10,GRIDY+2 : Draw GRIDX+20,GRIDY+5 To GRIDX+3,GRIDY+5 : Next GRIDY : GRIDY=40
  40.    For GRIDY=GRIDY To GRIDY+(8*ITEMS-1) Step 8 : Box GRIDX+26,GRIDY To GRIDX+50,GRIDY+7 : Draw GRIDX+29,GRIDY+2 To GRIDX+38,GRIDY+5 : Draw GRIDX+46,GRIDY+2 To GRIDX+36,GRIDY+5 : Draw GRIDX+46,GRIDY+2 To GRIDX+29,GRIDY+2 : Next GRIDY : GRIDY=40
  41.    For SCRY=270 To(200-50) Step -1 : Screen Display 1,128,200-SCRY,640,100 : Screen Display 2,128,SCRY,640,100 : Wait Vbl : Next SCRY
  42.    Do 
  43.       If Mouse Zone=2 Then Ink 0 : Box GRIDX,GRIDY To GRIDX+24,GRIDY+7 : Ink 1 : Box GRIDX,GRIDY To GRIDX+24,GRIDY+7
  44.       If Mouse Zone=4 Then Ink 0 : Box GRIDX,GRIDY+8 To GRIDX+24,GRIDY+15 : Ink 1 : Box GRIDX,GRIDY+8 To GRIDX+24,GRIDY+15
  45.       If Mouse Zone=3 Then Ink 0 : Box GRIDX+24+1,GRIDY To GRIDX+48+1,GRIDY+7 : Ink 1 : Box GRIDX+24+1,GRIDY To GRIDX+48+1,GRIDY+7
  46.       If Mouse Zone=5 Then Ink 0 : Box GRIDX+24+1,GRIDY+8 To GRIDX+48+1,GRIDY+15 : Ink 1 : Box GRIDX+24+1,GRIDY+8 To GRIDX+48+1,GRIDY+15
  47.       If Mouse Zone=1 Then Ink 0 : Box 320,83 To 639,99 : Ink 1 : Box 320,83 To 639,99 : If Mouse Key=1 Then Limit Mouse 136,206 To 199,241 : X Mouse=168 : Y Mouse=223 : Hide : Exit 
  48.       If Mouse Zone=(ITEMS*2)+2 Then Ink 0 : Box 320,41 To 480,60 : Ink 1 : Box 320,41 To 480,60
  49.       If Mouse Zone=(ITEMS*2)+3 Then Ink 0 : Box 480,41 To 639,60 : Ink 1 : Box 480,41 To 639,60
  50.       If Mouse Zone=2 and Mouse Key=1 and HOLD<50 and SILVER-SPICEPRICE>-1 Then SILVER=SILVER-SPICEPRICE : SPICEHOLD=SPICEHOLD+1 : HOLD=HOLD+1 : Locate 31,5 : Print SPICEHOLD; : Print " " : SILVERHOLD : Wait 10
  51.       If Mouse Zone=3 and Mouse Key=1 and SPICEHOLD>0 Then SILVER=SILVER+SPICEPRICE : SPICEHOLD=SPICEHOLD-1 : HOLD=HOLD-1 : Locate 31,5 : Print SPICEHOLD; : Print " " : SILVERHOLD : Wait 10
  52.       If Mouse Zone=4 and Mouse Key=1 and HOLD<50 and SILVER-OLIVESPRICE>-1 Then SILVER=SILVER-OLIVESPRICE : OLIVESHOLD=OLIVESHOLD+1 : HOLD=HOLD+1 : Locate 31,6 : Print OLIVESHOLD; : Print " " : SILVERHOLD : Wait 10
  53.       If Mouse Zone=5 and Mouse Key=1 and OLIVESHOLD>0 Then SILVER=SILVER+OLIVESPRICE : OLIVESHOLD=OLIVESHOLD-1 : HOLD=HOLD-1 : Locate 31,6 : Print OLIVESHOLD; : Print " " : SILVERHOLD : Wait 10
  54.       If Mouse Zone=(ITEMS*2)+2 and Mouse Key=1 Then Ink 0 : Bar 321,21 To 638,60 : Reset Zone(ITEMS*2)+2 : Reset Zone(ITEMS*2)+3 : MISSIVE=-1
  55.       If Mouse Zone=(ITEMS*2)+3 and Mouse Key=1 Then Ink 0 : Bar 321,21 To 638,60 : Reset Zone(ITEMS*2)+2 : Reset Zone(ITEMS*2)+3
  56.    Loop 
  57.    Screen 0 : RANKSILVERHOLD
  58.    For SCRY=(200-50) To 270 Step 1 : Screen Display 1,128,200-SCRY,640,100 : Screen Display 2,128,SCRY,640,100 : Wait Vbl : Next SCRY
  59.    Show : YESNO=0
  60.    Screen To Front 0 : Screen Close 1 : Screen Close 2 : Paper 0
  61.    Sprite 2,147,55,27
  62. End Proc
  63. Procedure GUILD
  64.    Screen Open 2,640,100,2,Hires : Curs Off : Box 0,0 To 639,99 : Screen Display 2,128,300-50,640,100
  65.    GRIDX=293 : GRIDY=40
  66.    Reserve Zone 3 : Limit Mouse 128,150 To 640+128,250 : Curs Off 
  67.    Locate 11,1 : A$="Very impressive record. Do you have the 50 Silver for a promotion?" : Centre A$
  68.    Locate 18,6 : Print "Yes                                      No"
  69.    Locate 11,11 : A$="EXIT" : Centre A$ : Box 300,83 To 338,97
  70.    Set Zone 1,300,83 To 338,97
  71.    Set Zone 2,80,25 To 240,75 : Box 80,25 To 240,75
  72.    Set Zone 3,400,25 To 560,75 : Box 400,25 To 560,75
  73.    For SCRY=270 To(200-50) Step -1 : Screen Display 1,128,200-SCRY,640,100 : Screen Display 2,128,SCRY,640,100 : Wait Vbl : Next SCRY
  74.    Do 
  75.       If Mouse Zone=2 Then Ink 0 : Box 80,25 To 240,75 : Ink 1 : Box 80,25 To 240,75
  76.       If Mouse Zone=3 Then Ink 0 : Box 400,25 To 560,75 : Ink 1 : Box 400,25 To 560,75
  77.       If Mouse Zone=1 Then Ink 0 : Box 300,83 To 338,97 : Ink 1 : Box 300,83 To 338,97 : If Mouse Key=1 Then Exit 
  78.       If Mouse Zone=2 and Mouse Key=1 and SILVER-50>-1 Then SILVER=SILVER-50 : RANK=RANK+1 : Exit 
  79.       If Mouse Zone=3 and Mouse Key=1 Then Wait 50 : Exit 
  80.       If Mouse Zone=4 and Mouse Key=1 and HOLD<50 and SILVER-OLIVESPRICE>-1 Then SILVER=SILVER-OLIVESPRICE : OLIVESHOLD=OLIVESHOLD+1 : HOLD=HOLD+1 : Locate 52,6 : Print OLIVESHOLD; : Print " " : SILVERHOLD : Wait 10
  81.       If Mouse Zone=5 and Mouse Key=1 and OLIVESHOLD>0 Then SILVER=SILVER+OLIVESPRICE : OLIVESHOLD=OLIVESHOLD-1 : HOLD=HOLD-1 : Locate 52,6 : Print OLIVESHOLD; : Print " " : SILVERHOLD : Wait 10
  82.    Loop 
  83. If RANK=0 Then RANK$="CabinBoy"
  84. If RANK=1 Then RANK$="  Cook  "
  85. If RANK=2 Then RANK$=" Swabby "
  86. If RANK>2 Then RANK$="3rd Mate"
  87.    Hide : Screen 0 : RANKSILVERHOLD
  88.    Limit Mouse 136,206 To 199,241 : X Mouse=168 : Y Mouse=223
  89.    For SCRY=(200-50) To 270 Step 1 : Screen Display 1,128,200-SCRY,640,100 : Screen Display 2,128,SCRY,640,100 : Wait Vbl : Next SCRY
  90.    Show 
  91.    Screen To Front 0 : Screen Close 1 : Screen Close 2 : Paper 0
  92. End Proc
  93. Procedure CHECKCOLLISION
  94.    LAND=Bob Col(20,1 To 19)
  95.    If LAND=True Then MAPX=MAPXPREV : MAPY=MAPYPREV : STICKSTICK=0
  96.    For WHERE=1 To 19 : THERE=Bob Col(WHERE,20 To 20)
  97.       If THERE=True and WHERE=1 Then SHEM : MARKET
  98.       If THERE=True and WHERE=2 Then WETHNA : MARKET
  99.       If THERE=True and WHERE=3 Then KETH : MARKET
  100.       If THERE=True and WHERE=18 Then OLYR : MARKET
  101.       If THERE=True and WHERE=5 Then KAR : GUILD
  102.       If THERE=True and WHERE=6 Then SHAMBALLAH : MARKET
  103.    Next WHERE
  104. End Proc
  105. Procedure SHEM
  106.    ITEMS=2 : SPICEPRICE=10 : OLIVESPRICE=5
  107.    CLEAR=0 : MAPX=MAPXPREV : MAPY=MAPYPREV : STICKSTICK=0 : Sprite Off 2
  108.    Screen Open 1,640,100,2,Hires : Curs Off : Cls 0 : Paper 0
  109.    Box 0,0 To 639,98
  110.    Screen Display 1,128,-50,640,100
  111.    Locate 22,1 : Print "Etesrinh"
  112.    Locate 16,3 : Print " The streets fairly"
  113.    Locate 16,4 : Print " reek of refuse and"
  114.    Locate 16,5 : Print " inadequate sewers."
  115. End Proc
  116. Procedure KAR
  117.    ITEMS=2 : SPICEPRICE=8 : OLIVESPRICE=5
  118.    CLEAR=0 : MAPX=MAPXPREV : MAPY=MAPYPREV : STICKSTICK=0 : Sprite Off 2
  119.    Load Iff "KarScene.iff",1 : Curs Off : Paper 0
  120.    Screen Display 1,128,-50,640,100
  121.    Locate 50,3 : Print "The Guild of Shipmasters"
  122.    Locate 50,5 : Print "  The official on duty"
  123.    Locate 50,6 : Print "  quickly reviews your"
  124.    Locate 50,7 : Print "    accomplishments."
  125. End Proc
  126. Procedure WETHNA
  127.    ITEMS=2 : SPICEPRICE=8 : OLIVESPRICE=5
  128.    CLEAR=0 : MAPX=MAPXPREV : MAPY=MAPYPREV : STICKSTICK=0 : Sprite Off 2
  129. Load Iff "wethnascene.iff",1 : Curs Off : Paper 0
  130. Rem Screen Open 1,640,200,2,Hires : Curs Off : Cls 0 : Paper 0 
  131. Rem   Box 0,0 To 639,98
  132.    Screen Display 1,128,-50,640,100
  133.    Locate 57,3 : Print "Djerem"
  134.    Locate 52,5 : Print " The capital of"
  135.    Locate 52,6 : Print "   Wethna is"
  136.    Locate 52,7 : Print "  all abustle."
  137. End Proc
  138. Procedure KETH
  139.    ITEMS=2 : SPICEPRICE=8 : OLIVESPRICE=3
  140.    CLEAR=0 : MAPX=MAPXPREV : MAPY=MAPYPREV : STICKSTICK=0 : Sprite Off 2
  141.    Load Iff "CVS_hires.iff",1 : Curs Off : Paper 0 : Screen To Front 0
  142.    Rem Screen Open 1,640,200,2,Hires : Curs Off : Cls 0 : Paper 0 
  143.    Rem   Box 0,0 To 639,98
  144.    Rem !!!!!!I CHANGED THIS !!!!!! Screen Display 1,128,-90,640,100 
  145.    Screen Display 1,128,-90,640,100
  146.    If MISSIVE=0 Then OGIN$="Keth" : MISSIVE
  147.    If MISSIVE=-1 Then If OGIN$="Keth" Then ERRANT=-1 : MISSIVE
  148. End Proc
  149. Procedure MAP
  150.    Limit Bob 85,0 To 320,200
  151.    If MAPY>-48 and MAPY<199 Then Bob 1,MAPX,MAPY,1 Else Bob Off 1 : Rem Shem 
  152.    If MAPY>-48 and MAPY<279 Then Bob 2,MAPX+28,MAPY-80,2 Else Bob Off 2 : Rem Wethna 
  153.    If MAPY>-48 and MAPY<327 and MAPX<235 Then Bob 3,MAPX+84,MAPY-126,3 Else Bob Off 3 : Rem Keth 
  154.    If MAPY>-138 and MAPY<153 Then Bob 4,MAPX-1,MAPY+46,4 Else Bob Off 4 : Rem Obayaku
  155.    Bob 5,MAPX-30,MAPY-135,5 : Rem Kar
  156.    If MAPY<82 and MAPY>-176 Then Bob 6,MAPX+25,MAPY+119,6 Else Bob Off 6 : Rem Shamballah 
  157.    If MAPY>-167 and MAPY<197 and MAPX<211 Then Bob 7,MAPX+108,MAPY+4,7 Else Bob Off 7 : Rem Sabia
  158.    If MAPY>-298 and MAPY<82 and MAPX<218 Then Bob 8,MAPX+103,MAPY+148,8 Else Bob Off 8 : Rem Kush 
  159.    If MAPY<-48 and MAPY>-304 and MAPX<205 Then Bob 9,MAPX+114,MAPY+250,9 Else Bob Off 9 : Rem Vaal 
  160.    If MAPY<-69 and MAPY>-359 and MAPX<193 Then Bob 10,MAPX+126,MAPY+273,10 Else Bob Off 10 : Rem Xandria
  161.    If MAPY<107 and MAPY>-219 Then Bob 11,MAPX+181,MAPY+92,11 Else Bob Off 11 : Rem Mangoland
  162.    If MAPY<325 and MAPY>72 Then Bob 12,MAPX+250,MAPY-123,12 Else Bob Off 12 : Rem Cyrus
  163.    If MAPY>36 and MAPY<293 Then Bob 13,MAPX+302,MAPY-94,13 Else Bob Off 13 : Rem Mag
  164.    If MAPY>-10 Then Bob 14,MAPX+352,MAPY-47,14 Else Bob Off 14 : Rem Kho  
  165.    If MAPY>-37 and MAPY<272 Then Bob 15,MAPX+352,MAPY-70,15 Else Bob Off 15 : Rem Schendi
  166.    If MAPY>-125 and MAPY<178 and MAPX<-37 Then Bob 16,MAPX+356,MAPY+23,16 Else Bob Off 16 : Rem Set
  167.    If MAPY>-74 and MAPY<189 Then Bob 17,MAPX+452,MAPY+11,17 Else Bob Off 17 : Rem Eros 
  168.    If MAPY>-115 and MAPY<132 Then Bob 18,MAPX+456,MAPY+67,18 Else Bob Off 18 : Rem Olyr 
  169.    If MAPY>-196 and MAPY<109 Then Bob 19,MAPX+358,MAPY+91,19 Else Bob Off 19 : Rem Mombaba
  170. End Proc
  171. Procedure MOVE
  172. LAND=Bob Col(20,1 To 19) : If LAND=True Then MAPX=MAPXPREV : MAPY=MAPYPREV
  173. MAPXPREV=MAPX : MAPYPREV=MAPY
  174. STICK=Joy(1) : If STICK=0 Then STICK=STICKSTICK Else STICKSTICK=STICK
  175. If X Mouse<137 Then STICK=4
  176. If Y Mouse<207 Then STICK=1
  177. If X Mouse>198 Then STICK=8
  178. If Y Mouse>240 Then STICK=2
  179. If X Mouse<137 and Y Mouse<207 Then STICK=5
  180. If X Mouse<137 and Y Mouse>240 Then STICK=6
  181. If X Mouse>198 and Y Mouse>240 Then STICK=10
  182. If X Mouse>198 and Y Mouse<207 Then STICK=9
  183. If STICK=4 Then MAPX=MAPX+1 : Sprite 2,147,55,25
  184. If STICK=8 Then MAPX=MAPX-1 : Sprite 2,147,55,21
  185. If STICK=2 Then MAPY=MAPY-1 : Sprite 2,147,55,23
  186. If STICK=1 Then MAPY=MAPY+1 : Sprite 2,147,55,27
  187. If STICK=6 Then MAPX=MAPX+1 : MAPY=MAPY-1 : Sprite 2,147,55,24
  188. If STICK=5 Then MAPX=MAPX+1 : MAPY=MAPY+1 : Sprite 2,147,55,26
  189. If STICK=9 Then MAPX=MAPX-1 : MAPY=MAPY+1 : Sprite 2,147,55,20
  190. If STICK=10 Then MAPX=MAPX-1 : MAPY=MAPY-1 : Sprite 2,147,55,22
  191. End Proc
  192. Procedure RANKSILVERHOLD
  193.    Pen 5 : Locate 1,10 : Print "  Rank"; : Pen 4 : Locate 1,11 : Print RANK$;
  194.    Pen 5 : Locate 1,13 : Print " Silver";
  195.    Pen 4 : Locate 3,14 : Print "    ";
  196.    Pen 4 : Locate 3,17 : Print "    ";
  197.    If SILVER<10 Then Locate 3,14 : Print SILVER;
  198.    If SILVER<100 and SILVER>9 Then Locate 3,14 : Print SILVER;
  199.    If SILVER<1000 and SILVER>99 Then Locate 2,14 : Print SILVER;
  200.    If SILVER<10000 and SILVER>999 Then Locate 2,14 : Print SILVER;
  201.    Pen 5 : Locate 0,16 : Print "Hold Space"; : Pen 4
  202.    If HOLDSIZE-HOLD<100 Then Locate 3,17 : Print HOLDSIZE-HOLD;
  203.    If HOLDSIZE-HOLD<10000 and HOLDSIZE-HOLD>99 Then Locate 2,17 : Print HOLDSIZE-HOLD;
  204. End Proc
  205. Procedure SILVERHOLD
  206.    Locate 3,11 : Print "Silver:"; : Print SILVER; : Print " "; : Locate 20,11 : Print "Space in Hold:"; : Print HOLDSIZE-HOLD;
  207. End Proc
  208. Procedure SETUP
  209.    Hide : Load Iff "BCLogo.iff",1 : Paper 0 : A$="Program by D. Clinton. (ctrl-c to quit)" : Locate 1,22 : Centre A$
  210.    Load Iff "waterIn8blue.iff",0 : Reserve Zone 5 : Screen 0 : Screen To Front 1
  211.    Load "BCR01.abk",1
  212.    Limit Mouse 136,206 To 199,241 : Change Mouse 2 : X Mouse=168 : Y Mouse=223
  213.    Curs Off : Double Buffer 
  214.    MAPX=220 : MAPY=90 : SILVER=50 : RANK=0 : HOLD=0 : RANK$="Cabinboy"
  215.    HOLDSIZE=25 : Rem STARTING SIZE
  216.    Bob 20,196,96,28
  217.    Ink 3 : Bar 0,0 To 79,37 : Paper 0
  218.    Ink 3 : For T=38 To 48 Step 2 : Draw 1,T To 78,T : Next T
  219.    Ink 3 : For T=50 To 62 Step 3 : Draw 1,T To 78,T : Next T
  220.    Ink 3 : For T=62 To 70 Step 4 : Draw 1,T To 78,T : Next T
  221.    Flash 7,"(444,2)(555,2)(666,2)(777,2)(666,2)(555,2)(444,2)"
  222.    Ink 0 : Bar 0,75 To 79,148 : Paper 0
  223.    Ink 4 : Box 0,0 To 79,74 : Box 0,74 To 79,148 : Box 0,148 To 79,199
  224.    MAP
  225.    RANKSILVERHOLD
  226.    For SCR=50 To -200 Step -1 : Screen Display 1,128,SCR,320,200 : Wait Vbl : Next SCR
  227.    Sprite 2,147,55,27
  228.    Screen Close 1 : Show 
  229.    Load Iff "Waterin8grey_A.iff",6 : Screen Display 6,128+320,400,32,16
  230.    Load Iff "Waterin8Blue_A.iff",7 : Screen Display 7,128+320,400,32,16
  231.    Screen 0 : Timer=0
  232. End Proc
  233. Procedure OLYR
  234.    ITEMS=2 : SPICEPRICE=12 : OLIVESPRICE=4
  235.    CLEAR=0 : MAPX=MAPXPREV : MAPY=MAPYPREV : STICKSTICK=0 : Sprite Off 2
  236.    Load Iff "CVS_hires.iff",1 : Curs Off : Paper 0
  237.    Rem Screen Open 1,640,200,2,Hires : Curs Off : Cls 0 : Paper 0 
  238.    Rem   Box 0,0 To 639,98
  239.    Screen Display 1,128,-50,640,100
  240.    If MISSIVE=0
  241.       Locate 46,3 : Print "A sombre man looks at you with"
  242.       Locate 46,4 : Print "a quizzical look on his face. "
  243.       Locate 46,5 : Print "Welcome to the far reaches, the"
  244.       Locate 46,6 : Print "western province, Olyr."
  245.    End If 
  246.    If MISSIVE=-1
  247.       Locate 46,3 : Print "It takes no time at all for you"
  248.       Locate 46,4 : Print "to find and deliver the missive"
  249.       Locate 46,5 : Print "to the twin of the sombre man."
  250.       Locate 46,6 : Print "He thanks and pays you.       "
  251.       SILVER=SILVER+50 : MISSIVE=0 : ERRANT=0
  252.    End If 
  253. End Proc
  254. Procedure MISSIVE
  255.    If MISSIVE=0
  256.       Rem rand =rnd(2) 
  257.       DEST$="Olyr"
  258.       Screen Open 3,320,100,4,Lowres : Curs Off : Cls 0 : Screen To Front 0 : Screen 3
  259.       Paper 0 : 
  260.       Locate 0,3 : Centre "A sombre man pulls you aside and"
  261.       Locate 0,4 : Centre "asks you to deliver an urgent"
  262.       Locate 0,5 : Centre "missive to his twin brother in"
  263.       Locate 0,6 : Pen 3 : Centre DEST$
  264.       Zoom 3,0,0,320,100 To 1,320,0,640,100 : Screen Close 3 : Screen To Front 1
  265.       YESNO=2
  266.    End If 
  267.    If ERRANT=-1
  268.       Screen Open 3,320,100,4,Lowres : Curs Off : Cls 0 : Screen To Front 0 : Screen 3
  269.       Paper 0 : 
  270.       Locate 0,3 : Centre "You agreed! Why have"
  271.       Locate 0,4 : Centre "you not voyaged to"
  272.       Locate 0,5 : Pen 3 : Centre DEST$
  273.       Locate 0,6 : Pen 2 : Centre "and delivered my missive?"
  274.       Zoom 3,0,0,320,100 To 1,320,0,640,100 : Screen Close 3 : Screen To Front 1
  275.       YESNO=0
  276.    End If 
  277. End Proc
  278. Procedure SHAMBALLAH
  279.    ITEMS=2 : SPICEPRICE=8 : OLIVESPRICE=2
  280.    CLEAR=0 : MAPX=MAPXPREV : MAPY=MAPYPREV : STICKSTICK=0 : Sprite Off 2
  281.    Load Iff "shamballah_HAM.iff",1 : Curs Off : Paper 0
  282.    Rem Screen Open 1,640,200,2,Hires : Curs Off : Cls 0 : Paper 0 
  283.    Pen 6
  284.    Screen Display 1,128,-50,640,100
  285.    Locate 23,3 : Print " Shamballah..."
  286.    Locate 23,5 : Print "    a nice "
  287.    Locate 23,6 : Print "   place to"
  288.    Locate 23,7 : Print "    visit."
  289. End Proc
  290. Procedure ERSATZSHEMBREAKSOFF
  291.    Rem Bob 1,MAPX,MAPY,1 Else Bob Off 1 : Rem Shem  
  292.    COUNT=COUNT+COUNTCOUNT
  293.    If COUNT>99 Then COUNTCOUNT=-1
  294.    If COUNT<1 Then COUNTCOUNT=1
  295.    Bob 22,MAPX-COUNT,MAPY,1
  296. End Proc